Node.js MongoDB Insert

Node.js MongoDB

প্যাকেজ মধ্যে সন্নিবেশ

একটি রেকর্ড সন্নিবেশ করতে, বা যাকে MongoDB-তে একটি নথি বলা হয়, একটি সংগ্রহে, আমরা insertOne() পদ্ধতি ব্যবহার করি।

MongoDB-তে একটি নথি MySQL-এর একটি রেকর্ডের সমতুল্য

insertOne() পদ্ধতির প্রথম প্যারামিটার হল একটি বস্তু যাতে আপনি যে নথিতে সন্নিবেশ করতে চান তার প্রতিটি ক্ষেত্রের নাম(গুলি) এবং মান(গুলি) থাকে৷

এটি একটি কলব্যাক ফাংশনও নেয় যেখানে আপনি যেকোনো ত্রুটি বা সন্নিবেশের ফলাফলের সাথে কাজ করতে পারেন:

উদাহরণ

"গ্রাহক" সংগ্রহে একটি নথি সন্নিবেশ করান:

let MongoClient = require('mongodb').MongoClient;
let url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  let dbo = db.db("mydb");
  let myobj = { name: "Company Inc", address: "Highway 37" };
  dbo.collection("customers").insertOne(myobj, function(err, res) {
    if (err) throw err;
    console.log("1 document inserted");
    db.close();
  });
});

উপরের কোডটি "demo_mongodb_insert.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_mongodb_insert.js

এটি আপনাকে এই ফলাফল দেবে:

1 document inserted

💡দ্রষ্টব্য:

আপনি যদি এমন একটি সংগ্রহে নথি সন্নিবেশ করার চেষ্টা করেন যা বিদ্যমান নেই, MongoDB স্বয়ংক্রিয়ভাবে সংগ্রহ তৈরি করবে।

একাধিক নথি ঢোকানো

MongoDB-তে একটি সংগ্রহে একাধিক নথি সন্নিবেশ করতে, আমরা insertMany() পদ্ধতি ব্যবহার করি।

insertMany() পদ্ধতির প্রথম প্যারামিটার হল অবজেক্টের একটি অ্যারে যাতে আপনি যে ডেটা সন্নিবেশ করতে চান।

এটি একটি কলব্যাক ফাংশনও নেয় যেখানে আপনি যেকোনো ত্রুটি বা সন্নিবেশের ফলাফলের সাথে কাজ করতে পারেন:

উদাহরণ

"গ্রাহক" প্যাকেজে বেশ কয়েকটি নথি সন্নিবেশ করুন:

let MongoClient = require('mongodb').MongoClient;
let url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  let dbo = db.db("mydb");
  let myobj = [
    { name: 'John', address: 'Highway 71'},
    { name: 'Peter', address: 'Lowstreet 4'},
    { name: 'Amy', address: 'Apple st 652'},
    { name: 'Hannah', address: 'Mountain 21'},
    { name: 'Michael', address: 'Valley 345'},
    { name: 'Sandy', address: 'Ocean blvd 2'},
    { name: 'Betty', address: 'Green Grass 1'},
    { name: 'Richard', address: 'Sky st 331'},
    { name: 'Susan', address: 'One way 98'},
    { name: 'Vicky', address: 'Yellow Garden 2'},
    { name: 'Ben', address: 'Park Lane 38'},
    { name: 'William', address: 'Central st 954'},
    { name: 'Chuck', address: 'Main Road 989'},
    { name: 'Viola', address: 'Sideway 1633'}
  ];
  dbo.collection("customers").insertMany(myobj, function(err, res) {
    if (err) throw err;
    console.log("Number of documents inserted: " + res.insertedCount);
    db.close();
  });
});

উপরের কোডটি "demo_mongodb_insert_multiple.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_mongodb_insert_multiple.js

এটি আপনাকে এই ফলাফল দেবে:

Number of documents inserted: 14

উপসংহার মানে

যখন insertMany() পদ্ধতিটি চালু করা হয়, তখন একটি ফলাফল বস্তু ফেরত দেওয়া হয়।

ফলাফল অবজেক্টে তথ্য থাকে কিভাবে সন্নিবেশ ডাটাবেসকে প্রভাবিত করে।

উপরের উদাহরণ থেকে প্রত্যাবর্তিত বস্তুটি এইরকম দেখায়:

{
  result: { ok: 1, n: 14 },
  ops: [
    { name: 'John', address: 'Highway 71', _id: 58fdbf5c0ef8a50b4cdd9a84 },
    { name: 'Peter', address: 'Lowstreet 4', _id: 58fdbf5c0ef8a50b4cdd9a85 },
    { name: 'Amy', address: 'Apple st 652', _id: 58fdbf5c0ef8a50b4cdd9a86 },
    { name: 'Hannah', address: 'Mountain 21', _id: 58fdbf5c0ef8a50b4cdd9a87 },
    { name: 'Michael', address: 'Valley 345', _id: 58fdbf5c0ef8a50b4cdd9a88 },
    { name: 'Sandy', address: 'Ocean blvd 2', _id: 58fdbf5c0ef8a50b4cdd9a89 },
    { name: 'Betty', address: 'Green Grass 1', _id: 58fdbf5c0ef8a50b4cdd9a8a },
    { name: 'Richard', address: 'Sky st 331', _id: 58fdbf5c0ef8a50b4cdd9a8b },
    { name: 'Susan', address: 'One way 98', _id: 58fdbf5c0ef8a50b4cdd9a8c },
    { name: 'Vicky', address: 'Yellow Garden 2', _id: 58fdbf5c0ef8a50b4cdd9a8d },
    { name: 'Ben', address: 'Park Lane 38', _id: 58fdbf5c0ef8a50b4cdd9a8e },
    { name: 'William', address: 'Central st 954', _id: 58fdbf5c0ef8a50b4cdd9a8f },
    { name: 'Chuck', address: 'Main Road 989', _id: 58fdbf5c0ef8a50b4cdd9a90 },
    { name: 'Viola', address: 'Sideway 1633', _id: 58fdbf5c0ef8a50b4cdd9a91 } ],
  insertedCount: 14,
  insertedIds: [
    58fdbf5c0ef8a50b4cdd9a84,
    58fdbf5c0ef8a50b4cdd9a85,
    58fdbf5c0ef8a50b4cdd9a86,
    58fdbf5c0ef8a50b4cdd9a87,
    58fdbf5c0ef8a50b4cdd9a88,
    58fdbf5c0ef8a50b4cdd9a89,
    58fdbf5c0ef8a50b4cdd9a8a,
    58fdbf5c0ef8a50b4cdd9a8b,
    58fdbf5c0ef8a50b4cdd9a8c,
    58fdbf5c0ef8a50b4cdd9a8d,
    58fdbf5c0ef8a50b4cdd9a8e,
    58fdbf5c0ef8a50b4cdd9a8f,
    58fdbf5c0ef8a50b4cdd9a90,
    58fdbf5c0ef8a50b4cdd9a91 ]
}

বৈশিষ্ট্য মান এই মত প্রদর্শিত হতে পারে:

উদাহরণ

ঢোকানো নথির সংখ্যা ফেরত দিন:

console.log(res.insertedCount)

এটি এই ফলাফল তৈরি করবে:

14

_id ক্ষেত্র

আপনি যদি একটি _id ক্ষেত্র নির্দিষ্ট না করেন, MongoDB আপনার জন্য একটি যোগ করবে এবং প্রতিটি নথিতে একটি অনন্য আইডি বরাদ্দ করবে।

উপরের উদাহরণে _id ক্ষেত্রটি নির্দিষ্ট করা নেই, এবং আপনি ফলাফল অবজেক্ট থেকে দেখতে পাচ্ছেন, MongoDB প্রতিটি নথিতে একটি অনন্য _id বরাদ্দ করেছে।

আপনি যদি _id ক্ষেত্র নির্দিষ্ট করেন, তাহলে মান অবশ্যই প্রতিটি নথির জন্য অনন্য হতে হবে:

উদাহরণ

"পণ্য" টেবিলে নির্দিষ্ট _id ক্ষেত্র সহ তিনটি রেকর্ড সন্নিবেশ করুন:

let MongoClient = require('mongodb').MongoClient;
let url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  let dbo = db.db("mydb");
  let myobj = [
    { _id: 154, name: 'Chocolate Heaven'},
    { _id: 155, name: 'Tasty Lemon'},
    { _id: 156, name: 'Vanilla Dream'}
  ];
  dbo.collection("products").insertMany(myobj, function(err, res) {
    if (err) throw err;
    console.log(res);
    db.close();
  });
});

উপরের কোডটি "demo_mongodb_insert_id.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_mongodb_insert_id.js

এটি আপনাকে এই ফলাফল দেবে:

{
  result: { ok: 1, n: 3 },
  ops: [
    { _id: 154, name: 'Chocolate Heaven },
    { _id: 155, name: 'Tasty Lemon },
    { _id: 156, name: 'Vanilla Dream } ],
  insertedCount: 3,
  insertedIds: [
    154,
    155,
    156 ]
}

আধুনিক সন্নিবেশ উদাহরণ

আধুনিক অ্যাসিঙ্ক/ওয়েট সিনট্যাক্স

const { MongoClient } = require('mongodb');

async function insertSingleDocument() {
  const uri = "mongodb://localhost:27017/";
  const client = new MongoClient(uri);

  try {
    await client.connect();
    const database = client.db("mydb");
    const collection = database.collection("customers");
    
    const result = await collection.insertOne({
      name: "Modern Company",
      address: "Digital Street 123",
      email: "info@moderncompany.com",
      createdAt: new Date()
    });
    
    console.log(`Document inserted with _id: ${result.insertedId}`);
    
  } catch (err) {
    console.error("Error inserting document:", err);
  } finally {
    await client.close();
  }
}

insertSingleDocument();

আধুনিক পদ্ধতিতে একাধিক নথি সন্নিবেশ করান

const { MongoClient } = require('mongodb');

async function insertMultipleDocuments() {
  const uri = "mongodb://localhost:27017/";
  const client = new MongoClient(uri);

  try {
    await client.connect();
    const database = client.db("mydb");
    const collection = database.collection("users");
    
    const users = [
      { name: "Alice", age: 25, city: "New York" },
      { name: "Bob", age: 30, city: "London" },
      { name: "Charlie", age: 35, city: "Tokyo" }
    ];
    
    const result = await collection.insertMany(users);
    
    console.log(`${result.insertedCount} documents were inserted`);
    console.log("Inserted IDs:", result.insertedIds);
    
  } catch (err) {
    console.error("Error inserting documents:", err);
  } finally {
    await client.close();
  }
}

insertMultipleDocuments();

সন্নিবেশ সেরা অনুশীলন

কর্মক্ষমতা

  • বড় সন্নিবেশের জন্য insertMany() ব্যবহার করুন
  • মডিউল সন্নিবেশ ব্যবহার করুন
  • অপ্রয়োজনীয় ক্ষেত্র এড়িয়ে চলুন
  • সঠিক কোডিং কৌশল ব্যবহার করুন

নিরাপত্তা

  • সর্বদা ব্যবহারকারীর ইনপুট যাচাই করুন
  • ডেটা ক্লিনজিং ফাংশন ব্যবহার করুন
  • যাচাইকৃত প্যাকেজ ব্যবহার করুন
  • ত্রুটি হ্যান্ডলিং এবং পর্যবেক্ষণ ব্যবহার করুন

ডেটা ডিজাইন

  • আদর্শ ক্ষেত্রের নাম ব্যবহার করুন
  • তারিখ/সময় সঠিকভাবে ফরম্যাট করুন
  • প্রয়োজনীয় ক্ষেত্র নির্দিষ্ট করুন
  • নথির আকার নিরীক্ষণ করুন

সম্পূর্ণ উদাহরণ

সমস্ত সন্নিবেশ কৌশলগুলিকে কভার করে সম্পূর্ণ উদাহরণ:

const { MongoClient } = require('mongodb');

class DataInserter {
  constructor(connectionString, dbName) {
    this.connectionString = connectionString;
    this.dbName = dbName;
    this.client = new MongoClient(connectionString);
  }

  async connect() {
    try {
      await this.client.connect();
      console.log("Connected to MongoDB server");
      this.database = this.client.db(this.dbName);
      return true;
    } catch (error) {
      console.error("Connection failed:", error);
      return false;
    }
  }

  async insertSingle(collectionName, document) {
    try {
      const collection = this.database.collection(collectionName);
      const result = await collection.insertOne(document);
      console.log(`Inserted document with _id: ${result.insertedId}`);
      return result;
    } catch (error) {
      console.error("Error inserting single document:", error);
      throw error;
    }
  }

  async insertMultiple(collectionName, documents) {
    try {
      const collection = this.database.collection(collectionName);
      const result = await collection.insertMany(documents);
      console.log(`Inserted ${result.insertedCount} documents`);
      return result;
    } catch (error) {
      console.error("Error inserting multiple documents:", error);
      throw error;
    }
  }

  async insertWithCustomIds(collectionName, documentsWithIds) {
    try {
      const collection = this.database.collection(collectionName);
      const result = await collection.insertMany(documentsWithIds);
      console.log(`Inserted ${result.insertedCount} documents with custom IDs`);
      return result;
    } catch (error) {
      console.error("Error inserting documents with custom IDs:", error);
      throw error;
    }
  }

  async close() {
    try {
      await this.client.close();
      console.log("Connection closed");
    } catch (error) {
      console.error("Error closing connection:", error);
    }
  }
}

// Usage example
async function main() {
  const connectionString = "mongodb://localhost:27017/";
  const dbName = "mydb";
  
  const inserter = new DataInserter(connectionString, dbName);

  try {
    const connected = await inserter.connect();
    if (!connected) return;

    // Insert single document
    await inserter.insertSingle("customers", {
      name: "Tech Solutions Inc",
      address: "Tech Park 456",
      industry: "Technology",
      founded: 2020
    });

    // Insert multiple documents
    const employees = [
      { name: "Sarah", position: "Developer", salary: 60000 },
      { name: "Mike", position: "Designer", salary: 55000 },
      { name: "Lisa", position: "Manager", salary: 75000 }
    ];
    await inserter.insertMultiple("employees", employees);

    // Insert with custom IDs
    const products = [
      { _id: "prod001", name: "Laptop", price: 999.99, category: "Electronics" },
      { _id: "prod002", name: "Mouse", price: 29.99, category: "Electronics" },
      { _id: "prod003", name: "Keyboard", price: 79.99, category: "Electronics" }
    ];
    await inserter.insertWithCustomIds("products", products);

    console.log("All insert operations completed successfully!");
    
  } catch (error) {
    console.error("Main function error:", error);
  } finally {
    await inserter.close();
  }
}

// Run the example
main();

অনুশীলন করুন

MongoDB-এর একটি নথি MySQL-এর একটি ______-এর সমতুল্য।

ডাটাবেস
✗ ভুল! একটি ডাটাবেস MongoDB-তে একটি ডাটাবেসের সমতুল্য, একটি পৃথক নথি নয়
সময়সূচী
✗ ভুল! একটি টেবিল MongoDB-তে একটি সংগ্রহের সমতুল্য, একটি পৃথক নথি নয়
নিবন্ধন করুন
✓ ঠিক আছে! MongoDB-তে একটি নথি MySQL-এর একটি রেকর্ডের সমতুল্য। উভয়ই পৃথক ডেটা আইটেম উল্লেখ করে
কলাম
✗ ভুল! একটি কলাম MySQL-এ একটি পৃথক ডেটা ক্ষেত্র, একটি সম্পূর্ণ রেকর্ড নয়